Blog search

Friday Facts #61 - Into India

Posted by Tomas on 2014-11-21

Hi there, we spent quite some time at the GDSession last weekend. The conference was fun, but a bit tiring. I think we are not used to meet many new people at the same time anymore. And there were tons of new people:) The talks were unsurprising but we enjoyed chatting to small indie studios sharing similar challenges we do. And they had great cakes for refreshement:)

Factorio version 0.17 - Now stable

Posted by Factorio Team on 2019-09-24

Click to view full resolution It has been 6 months and nearly 70 releases since we first launched 0.17 to the world. Now is the time to let it be enjoyed by all the players of the game. We are going to be continuing our work on 0.17 over the next few months, with small experimental releases of new features, and finishing all the GUI reworks.

Friday Facts #208 - Tips and tricks improvement

Posted by kovarex & Klonan on 2017-09-15

Hello, it's another Friday, so time for another Friday Facts.

Friday Facts #319 - New T-shirts & Lua event filtering

Posted by Jitka, Albert, Aleš, Klonan, Rseding on 2019-11-01

Hello, There is a bit of a cold/flu going around the office, but it isn't severe enough to dampen our spirits (I don't like the daylight savings though).

Friday Facts #242 - Offensive programming

Posted by kovarex on 2018-05-11

Hello, this post is going to be more technical than usual, yet it might still be interesting to know the background of the process for some people.

Friday Facts #131 - Roadmap shuffle

Posted by kovarex on 2016-03-25

Hello Factory builders.

Friday Facts #66 - Merry christmas

Posted by kovarex on 2014-12-26

You would expect that we wouldn't have anything new during christmas, but you couldn't be more wrong, as the Factorio development never stops.

Friday Facts #228 - High resolution turrets

Posted by posila & V453000 on 2018-02-02

Bugfixing report (posila) Stabilization goes well, the game seems to be quite stable right now (as in - not many crashes are being reported), in fact I think we are at the phase where additional bugfixing makes the game less stable, because more bugs are introduced than fixed, or some critical bug slips through our automated tests. But there are still lot of issues that need to be resolved before we declare 0.16 stable and move on to 0.17 development - the largest issue being belt compression problems. We finally fixed compatibility problem with OS X 10.9 Mavericks after it was broken in 0.15.40, when we updated our development environment to a newer version of boost, and was still broken in 0.16.x despite of us completely replacing boost with standard libraries from a newer version of C++. However, we might drop Mavericks support in 0.17, as we are considering migrating the game to OpenGL 4.1, which won’t be available on Macs that are unable to run a newer version of macOS. Speaking of OpenGL, we have several reports of the game crashing in rendering on Linux when the game is disturbed somehow (for example window resizes, loses focus or user switches workspaces), even though it is terribly inconvenient, the game seems to be otherwise playable on these configurations, and we don’t want to spend a terrible amount of time trying to figure out what is wrong with our current rendering system, when we plan to do complete overhaul of it in 0.17. We will investigate these issues, but they might go unresolved until 0.17. I’ve been looking into some corrupted saves this week, still not being able to figure out how these mysterious corruptions occur. For example this save had two iron ore entities on two different chunks saved with zero entity ID. This could have happened only if those entities had a wrong pointer to the iron ore prototype, so when the game read the ID from the prototype on saving, it would read a value from some random part of memory, or if the ID was corrupted on copying from the prototype to buffer that is saved to disk. Since these kind of corruptions seem to be relatively rare, we suspect it might caused by random hardware failures (maybe cosmic ray hitting a transistor and flipping bit somewhere?), but it would be nice to have some proof it is not some dangling pointer in our code that causes random parts of memory to be overwritten by who knows what. One way to test it would be to check for tile corruptions. Tile data for a chunk is allocated in a 4kB array at the beginning of the chunk. We could create custom allocator for chunks, so that data structure representing chunk is aligned to virtual pages. That way tile data would occupy a whole single virtual page which we could flag as read only. Then, if due to a bug we write over tile data, the OS would crash the game and we would get a stacktrace and crash dump to investigate. But if a cosmic ray would hit the RAM and flip a bit, the corrupted save would still be produced. However, we currently don’t do any custom allocation of virtual pages, so it might be quite hard to implement. We also need to change tiles sometimes (when map generation runs, when player uses concrete or landfill, when a script changes tiles, etc.) and we don’t know how expensive it would be to change pages from read only to read-write and then back to read only. So it might be just easier to spend two hours on fixing a broken save that someone sends us once every week or two.

Friday Facts #118 - Improving productivity

Posted by kovarex on 2015-12-25

Hello and Merry Christmas, there are no holidays that stop us from informing you about the progress of Factorio development, so enjoy :)